package com.wc.fortnight_blue_bridge.Q16模拟一.D_日期模拟;


public class Main {
    /**
     * 【问题描述】
     * 如果一个日期的日期以 1 结尾（1日、11日、21日、31日）且为星期一，则称这个日期为一好日期。
     * 请问从 1901 年 1 月 1 日至 2024 年 12 月 31 日总共有多少个一好日期。
     * 提示：1901 年 1 月 1 日是星期二。
     * 答案：762
     */
    static int[] ms = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    public static void main(String[] args) {
        int sty = 1901, stm = 1, std = 1;
        int edy = 2024, edm = 12, edd = 31;
        int week = 2;
        int res = 0;
        for (int y = sty; y <= edy; y++){
            if (check(y)) ms[2] = 29;
            else ms[2] = 28;
            for (int m = 1; m <= 12; m++){
                for(int d = 1; d <= ms[m]; d++){
                    if (d % 10 == 1 && week == 1) res++;
                    week++;
                    if (week == 8) week %= 7;
                }
            }
        }
        System.out.println(res);
    }

    static boolean check(int y){
        return y % 4 == 0 && y % 100 != 0 || y % 400 == 0;
    }
}
